package com.xian.tszs.meal.business;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.druid.util.StringUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xian.tszs.meal.component.SpeechSynthesis;
import com.xian.tszs.meal.dto.TsOrderDTO;
import com.xian.tszs.meal.entity.TsAdmin;
import com.xian.tszs.meal.entity.TsOrder;
import com.xian.tszs.meal.service.OrderManageService;

@Controller
@RequestMapping("business/orderManage")
public class TsOrderManageController {
	
	@Autowired
	private OrderManageService orderManageService;
	
	@Autowired
	private SpeechSynthesis speechSyn;
	
	/***
	 * 订单管理
	* @author: MRC  
	* @date 2019年5月22日 上午10:07:45 
	* @return String 返回类型
	 */
	@GetMapping("orderManage")
	public String toOrderManage() {
		
		return "orderManage";
		
	}
	
	/***
	 * 订单处理
	* @author: MRC  
	* @date 2019年5月23日 上午9:50:26 
	* @return String 返回类型
	 */
	@GetMapping("orderHandle")
	public String toOrderHandle() {
		return "orderHandle";
	}
	
	/***
	 * 订单详情
	* @author: MRC  
	* @date 2019年5月24日 上午9:56:11 
	* @return String 返回类型
	 */
	@GetMapping("orderDetail")
	public String toOrderDetail(String id,Model moudel) {
		
		moudel.addAttribute("item", orderManageService.orderDetail(id));
		
		return "orderDetail";
	}
	
	/****
	 * 订单分页
	* @author: MRC  
	* @date 2019年5月22日 上午10:20:02 
	* @return Map<String,Object> 返回类型
	 */
	@PostMapping("findOrdersPage")
	@ResponseBody
	public Map<String, Object> findOrdersPage(Integer page, Integer limit,TsOrder order) {
		
		Map<String, Object> map = new HashMap<String, Object>();

		PageHelper.startPage(page, limit);

		List<TsOrder> lists = orderManageService.findOrdersAll(order);
		PageInfo<TsOrder> pageInfo = new PageInfo<TsOrder>(lists);

		map.put("code", 0);
		map.put("count", pageInfo.getTotal());
		map.put("data", pageInfo.getList());

		return map;
	}
	
	/***
	 * 返回正在处理当中的订单
	* @author: MRC  
	* @date 2019年5月23日 上午11:35:35 
	* @return Map<String,Object> 返回类型
	 */
	@PostMapping("findOrderHandle")
	@ResponseBody
	public Map<String, Object> findOrderHandle(@AuthenticationPrincipal TsAdmin logined) {
		
		Map<String, Object> map = new HashMap<String, Object>();

		List<TsOrderDTO> lists = orderManageService.findOrderHandle(logined.getId());
		map.put("data", lists);
		map.put("success", true);
		return map;
	}
	/***
	 * 订单呼叫
	* @author: MRC  
	* @date 2019年5月23日 下午2:23:57 
	* @return Map<String,Object> 返回类型
	 */
	@PostMapping("orderCall")
	@ResponseBody
	@Cacheable(value = "orderCall")
	public Map<String, Object> orderCall(String code) {
		
		String text = "请"+code+"号顾客取餐！";
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("data", speechSyn.speechSynth(text));
		
		return map;
	}
	
	/***
	 * 修改订单信息
	* @author: MRC  
	* @date 2019年5月23日 下午4:40:05 
	* @return Map<String,Object> 返回类型
	 */
	@PostMapping("updateOrderStatus")
	@ResponseBody
	public Map<String, Object> updateOrderStatus(String orderId,String code) {
		
		Map<String, Object> map = new HashMap<>();
		
		Integer status = 0;
		
		if ("success".equals(code)) {
			status = 4;
		} else if ("coking".equals(code)) {
			status = 3;
		}
		orderManageService.updateOrderStatus(status, orderId);
		
		map.put("success", true);
		map.put("msg", "订单信息变更成功");
		return map;
	}
	
	/***
	 * 订单详情
	* @author: MRC  
	* @date 2019年5月24日 上午9:54:57 
	* @return Map<String,Object> 返回类型
	 */
	@PostMapping("orderDetail")
	@ResponseBody
	public Map<String, Object> orderDetail(String id) {
		
		Map<String, Object> map = new HashMap<>();
		
		map.put("success", false);
		if (StringUtils.isEmpty(id)) {
			
			map.put("msg", "参数缺失！");
		} else {
			map.put("success", true);
		}
		return map;
	}
	
}
